package com.sz.biz.common.customer.service;

import com.sz.biz.common.customer.entity.CusUserAddress;
import com.sz.biz.common.customer.dto.CusUserAddressDto;

import java.util.List;
import java.util.Map;

/**
 * Function: TODO: ADD FUNCTION <br>
 * Author: qiankun <br>
 * Date: 2017-05-12 11:10:47
 */
public interface CustomerUserAddressService {
    /**
     * 保存或者修改
     *
     * @param addressDto
     * @return
     */
    int saveOrUpdate(CusUserAddressDto addressDto);

    /**
     * 根据id 和customerid  删除地址
     *
     * @param id
     * @param customerId
     */
    void delete(List<Integer> id, int customerId);

    CusUserAddress findById(int id);

    /**
     * 根据id 和customerId 查询地址
     *
     * @param id
     * @param customerId
     * @param type       类型 1、发货人 2、收货人
     * @return
     */
    List<CusUserAddressDto> queryByCusIdAndIdsAndType(Integer id, Integer customerId, Integer type, Integer transportType);

    /**
     * 根据旧的默认值id，新的默认值id和客户id 来修改默认地址
     *
     * @param oldId
     * @param newId
     * @param customerId
     * @param type
     */
    void setDefault(Integer oldId, Integer newId, Integer customerId, Integer type, Integer transportType);

    /**
     * 根据客户id 和地址类型 来查询该该类型的地址数量
     *
     * @param customerId
     * @param type
     * @return
     */
    int queryCountByCustomerIdAndType(Integer customerId, Integer type, Integer transportType);

    /**
     * 根据客户id 和地址类型 查询国家
     *
     * @param customerId
     * @param type
     * @return
     */
    List<CusUserAddress> findCountryByCustomerIdAndType(Integer customerId, Integer type);

    /**
     * 根据服务，筛选出可用地址和不可用地址
     *
     * @param customerId
     * @param type 1、发货地址 2、收货地址,3揽收地址
     * @param transportType 全球海运:1,全球速递:11,全球空运:6
     * @param uid
     * @return
     */
    Map<String,List<CusUserAddressDto>>  findAddressByProduct(Integer customerId, Integer type , Integer transportType, String uid);

    List<CusUserAddressDto> queryByCusIdAndtransportType(Integer customerId, Integer transportType);
}
